package com.frcdi.qms.masterdata.mapper;

import com.frcdi.qms.common.core.domain.entity.ProjectType;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 检验项目类型Mapper接口
 *
 * @author cell
 * @date 2023-09-12
 */
public interface ProjectTypeMapper
{
    /**
     * 查询检验项目类型
     *
     * @param id 检验项目类型主键
     * @return 检验项目类型
     */
    public ProjectType selectProjectTypeById(Long id);

    /**
     * 查询检验项目类型列表
     *
     * @param projectType 检验项目类型
     * @return 检验项目类型集合
     */
    public List<ProjectType> selectProjectTypeList(ProjectType projectType);

    /**
     * 新增检验项目类型
     *
     * @param projectType 检验项目类型
     * @return 结果
     */
    public int insertProjectType(ProjectType projectType);

    /**
     * 修改检验项目类型
     *
     * @param projectType 检验项目类型
     * @return 结果
     */
    public int updateProjectType(ProjectType projectType);

    /**
     * 删除检验项目类型
     *
     * @param id 检验项目类型主键
     * @return 结果
     */
    public int deleteProjectTypeById(Long id);

    /**
     * 批量删除检验项目类型
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteProjectTypeByIds(Long[] ids);

    public int hasChildById(Long id);

    public ProjectType checkProjectTypeNameUnique(@Param("projectTypeName")String projectTypeName, @Param("parentId")Long parentId);

    /**
     * 根据ID查询所有子部门
     *
     * @param id ID
     * @return
     */
    public List<ProjectType> selectChildrenId(Long id);

    /**
     * 修改子元素关系
     *
     * @param projectTypes 子元素
     * @return 结果
     */
    public int updateProjectTypeChildren(@Param("projectTypes") List<ProjectType> projectTypes);

    public int checkProjectTypeExistProject(Long id);
}
